//
// Created by xumy on 2021/9/5.
// 信号处理
//

#include "iostream"
#include "csignal"
#include "unistd.h"

using namespace std;

void signalHandler( int signal_num) {
    cout << "错误的算术运算 (" << signal_num << "). \n";

    exit(signal_num);
}

int main() {
    // 注册信号 SIGFPE 和信号处理程序
    signal(SIGFPE, signalHandler);

    int i = 0;

    // 通过生成信号触发信号处理程序
    while (++i) {
        cout << "sleep ..." << endl;
        if (i == 3) {
            raise(SIGFPE);      // 生成信号
        }
        sleep(1);
    }

    int num = 0, num1 = 1;

    int num2 = num1 / num;

    return 0;
}